home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’93 / Inside Mac Movie Toolbox Code / mtb10.c < prev    next >
Encoding:
Text File  |  1992-10-22  |  1.7 KB  |  64 lines  |  [TEXT/KAHL]

  1. //    Copyright:    © 1992 by Apple Computer, Inc., all rights reserved.
  2.  
  3. #include "mtb.h"
  4.  
  5. void CreateMySoundTrack (Movie theMovie)
  6. {
  7.     Track                                     theTrack;
  8.     Media                                     theMedia;
  9.     Handle                                    sndHandle = nil;
  10.     SoundDescriptionHandle                                    sndDesc = nil;
  11.     long                                     sndDataOffset;
  12.     long                                     sndDataSize;
  13.     long                                     numSamples;
  14.     OSErr                                    err = noErr;
  15.  
  16.  
  17.     sndHandle = GetResource ('snd ', 128);
  18.     CheckError (ResError(), "\pGetResource" );
  19.     if (sndHandle == nil) return;
  20.  
  21.     sndDesc = (SoundDescriptionHandle) NewHandle(4);
  22.     CheckError (MemError(), "\pNewHandle" );
  23.     
  24.     CreateSoundDescription (sndHandle, 
  25.                             sndDesc, 
  26.                             &sndDataOffset, 
  27.                             &numSamples, 
  28.                             &sndDataSize );
  29.                             
  30.     theTrack = NewMovieTrack (theMovie, 0, 0, kFullVolume);
  31.     CheckError (GetMoviesError(), "\pNewMovieTrack" );
  32.     
  33.     theMedia = NewTrackMedia (theTrack, SoundMediaType,
  34.                                         FixRound ((**sndDesc).sampleRate), 
  35.                                         nil, 0);
  36.     CheckError (GetMoviesError(), "\pNewTrackMedia" );
  37.  
  38.     err = BeginMediaEdits (theMedia);
  39.     CheckError( err, "\pBeginMediaEdits" );
  40.  
  41.     err = AddMediaSample(theMedia,
  42.                     sndHandle,
  43.                     sndDataOffset,                    // offset in data
  44.                     sndDataSize,    
  45.                     1,                    // duration of each sound sample
  46.                     (SampleDescriptionHandle) sndDesc,    
  47.                     numSamples,
  48.                     0,                    // self-contained samples
  49.                     nil    );
  50.     CheckError( err, "\pAddMediaSample" );
  51.                     
  52.     err = EndMediaEdits (theMedia);
  53.     CheckError( err, "\pEndMediaEdits" );
  54.  
  55.     err = InsertMediaIntoTrack (theTrack, 
  56.                                     0,            // track start time
  57.                                     0,            // media start time
  58.                                     GetMediaDuration (theMedia),
  59.                                     kFix1);    
  60.     CheckError( err, "\pInsertMediaIntoTrack" );
  61.  
  62.     if (sndDesc != nil) DisposeHandle( (Handle)sndDesc);
  63. }
  64.